

nth([H|_],0,E) :- H = E,!.
nth([_|T],N,E) :- N1 is N-1 , nth(T,N1,E).

%nth([a,b,c,d],N,c).  arguments insufficiently instantiated.
%because: When N is fed to the nth rule, the expression N1 is N-1 can not be evaluated (N is not known, so the arithmetical expression cann not be evaluated).